<table border="2" width="600"><tr><td>--- width 600 ---</td></tr></table>
<br>
<table border="1" cellpadding="2" cellspacing="0" width="600">
 <tr>
  <th>&nbsp;</th><th width="300">HTML &amp;&nbsp;Javascript</th><th width="300">JNLP (Webstart)</th>
  <th width="300">XAMJ (Warrior)</th>
 </tr>
 <tr>
  <td class="bodytext"><b>Syntax</b></td>
  <td class="bodytext"  valign="top">
      HTML syntax is known to be brittle, prone to
      ambiguities, not very suitable for verification,
      and hard to scrape. XHTML intends to fix that (but 
      XHTML is not available in IE as of this writing.)
      Javascript is not type-safe, not really object-oriented,
      error prone, and difficult to debug.
  </td>
  <td class="bodytext"  valign="top">
      The Java language is quite type-safe, even more
      so now with generics. It is object oriented and
      incorporates threading, synchronization and other
      important features as part of the language.
  </td>
  <td class="bodytext"  valign="top">
      XAMJ syntax is strict XML. XAMJ can embed Java code
      which is compiled as the document is processed.
      Any errors in the document processing phase are
      shown right away. Errors that occur during event
      processing are logged. (The Warrior platform now provides
      a console for standard output.)
   </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Skills Needed</b></td>
  <td class="bodytext"  valign="top">
      Some basic HTML may be written by virtually anyone.
      Web designers without much knowledge of programming
      can create amazing things with it. More advanced
      uses of Javascript (AJAX) do require considerable
      knowledge or programming and skill.
  </td>
  <td class="bodytext"   valign="top">
      JNLP of course requires knowledge of Java and
      object-oriented programming. 
  </td>
  <td class="bodytext"  valign="top">
      XAMJ markup is not that different to HTML.
      We expect it to be simple enough for web
      designers to be able to do a lot with it
      without getting into Java programming.
  </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Processing &amp;&nbsp;Packaging</b></td>
  <td class="bodytext"  valign="top">
      An HTML document may be easily made available on the web. 
      No compilation or
      packaging are necessary. The document is parsed
      by a browser and rendered.
  </td>
  <td class="bodytext"   valign="top">
      Java program source code consists of <code>.java</code>
      files which need to be converted to <code>.class</code>
      files, which are then packaged into <code>.jar</code>
      files. A JNLP file contains meta information in XML
      about the program and how to locate it.
  </td>
  <td class="bodytext"  valign="top">
      A XAMJ document is automatically compiled into a 
      special class called a <i>clientlet</i>, which
      is cached. No in-advance compilation or packaging
      are necessary.
   </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>GUI Capabilities</b></td>
  <td class="bodytext"  valign="top">
      Limited to a large extent, although there is
      much you can do by combining images and significant
      scripting (AJAX) code. This does make it pretty
      high-bandwidth for relatively simple things.
      Vector graphics are not really doable.
  </td>
  <td class="bodytext"   valign="top">
      It provides the AWT and Swing frameworks. Swing
      is quite complete, and is sometimes criticized
      for being over-engineered. The competing SWT
      framework is considered better by many.
  </td>
  <td class="bodytext"  valign="top">
      Although still evolving, XAMJ has a DOM which
      includes many common widgets such as trees,
      tabs, etc. XAMJ is designed so that it is
      feasible to implement its DOM interfaces 
      with alternative
      GUI frameworks, despite the fact that Warrior
      is implemented as a layer around Swing.
      XAMJ GUI code is generally a lot more compact
      and simple than Java GUI code.
   </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Text Markup Capabilities</b></td>
  <td class="bodytext"  valign="top">
      Fairly extensive, but not perfect.
  </td>
  <td class="bodytext"   valign="top">
      Available to the extent that an HTML component
      or an external library is used. But HTML support 
      in Java is not fully up to standard as of this 
      writing.
  </td>
  <td class="bodytext"  valign="top">
      XAMJ text markup is still at an early stage,
      but we expect to improve it considerably and
      add capabilities not available in HTML. XAMJ
      markup, again, is very similar to HTML.
   </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Other Capabilities</b></td>
  <td class="bodytext"  valign="top">
      The API library available to
      Javascript is fairly small. There are scripts
      available on the web in source form which may
      be incorportated in a page.
  </td>
  <td class="bodytext"   valign="top">
      The shipped library is enormous.
      The number and complexity of libraries available
      thru third parties and open source projects is
      also very extensive.
      Some of these capabilities may not be
      accessible due to security.
  </td>
  <td class="bodytext"  valign="top">
      XAMJ has access to the Java library.
      XAMJ provides a way to load external JAR files
      as well. Security restrictions also apply to
      XAMJ apps deployed remotely.       
  </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Security</b></td>
  <td class="bodytext"  valign="top">
      Most security in HTML is achieved due to lack
      of capability. There is no direct access to files
      for example. That has to be done thru Java applets.
      Even so, HTML browsers are generally plagued by
      security problems.
  </td>
  <td class="bodytext"   valign="top">
      Java implements a security sandbox with
      policies and permissions.
  </td>
  <td class="bodytext"  valign="top">
      Warrior leverages the Java security architecture.
      It installs a security policy applied depending
      on where the application is launched from.
      We also expect to identify possible attack
      scenarios and publish how they are dealt with.
      The open source community is invited to review
      the source code for security holes and give feedback.
  </td>      
 </tr>
 <tr>
  <td  class="bodytext"><b>Local Storage</b></td>
  <td class="bodytext"  valign="top">
      There is no access to the client file system
      in HTML/Javascript except thru plugins such
      as Java applets. A browser can, however, save small
      named pieces of information called cookies.
  </td>
  <td class="bodytext"   valign="top">
      A Java program served over HTTP cannot normally
      access the client file system, unless the code
      is signed. It can, however, save <code>muffins</code>
      which are more flexible than HTTP cookies, and 
      are identified by URIs.
  </td>
  <td class="bodytext"  valign="top">
      A XAMJ (0.93+) engine must provide a managed
      store per host, restricted by a size quota. This
      is basically a small file system that code
      served over HTTP can safely access on the user's
      computer.
  </td>      
 </tr>
</table>

